
/**
 * @File	logout.h
 * @brief	日志功能头文件.
 * @auhtor	Alan
 * @data	2008-8-25 23:43
 * @see		logout.c
 * $Id$
**/

#ifndef	__LOGOUT_H__
#define __LOGOUT_H__

#define NOLOG		0   /// 无日志.
#define LOGSTDOUT	1   /// 输出到控制台.
#define LOGFILE		2   /// 输出到文件.

#define LOG_BUF_CNT		128 /// 缓存的日志条数.
#define LOG_BUF_SIZE	256 /// 每条记录的长度.
#define LOG_FILE_SIZE	102400  /// 每个文件的行数.

/// 定义日志输出的宏.
#ifdef USER_LOGOUT

/// 使用定义的宏.
#define LOGOPEN(x,y,z)	logopen(x,y,z)
#define LOGOUT(...) 	logout(__FILE__, __FUNCTION__, __LINE__, __VA_ARGS__)
#define LOGCLOSE()		logclose()
#define LOGREGSIG()		logregsig()

/// 不要直接使用日志函数.
int logopen(const char *label, int level, int flag);
int logclose(void);
int logout(const char *file, const char *func, const int line,
           const int level, const char *fmt, ...);

#define LOG_ENTER()     LOGOUT(1, " * Enter\n")
#define LOG_EXIT()      LOGOUT(1, " * Exit\n")

#define LOG_MSGIN()     LOGOUT(1, " * <<-- \n")
#define LOG_MSGOUT()    LOGOUT(1, " * -->> \n")

#else                           /* USER_LOGOUT */

#define LOGOPEN(x,y,z)
#define LOGOUT(...)
#define LOGCLOSE()
#define LOGREGSIG()

#define LOG_ENTER()
#define LOG_EXIT()

#define LOG_MSGIN()
#define LOG_MSGOUT()

#endif                          // USER_LOGOUT

#endif                          // __LOGOUT_H__
